Git 的裸仓库
bare 裸仓库
裸仓库指 .git
文件夹,而工作目录指除 .git
文件夹外的其他文件
git --bare init
用来创建裸(bare)仓库,里面只存储历史和元信息,不会维护工作目录。
那么 bare
库有什么用呢?
git@gitee.com:alsritter/tempImage.git
可以注意到 Github、Gitee 这些远程库的资源结尾都是 .get
,也没有本地库那样的 .git
文件夹,说明这些库都是使用的 bare
库
使用裸库生成工作目录
使用裸库的钩子来生成工作目录
首先在裸仓库的 /hooks
文件夹下新建 post-receive
文件
#!/bin/sh
git --work-tree=工作目录 --git-dir=裸仓库 checkout -f
授予执行权限
$ sudo chmod +x post-receive
警告
Linux 的换行符和 Windows 的是不一样的,需要把文件的换行符改成 Linux 的才行
将现有仓库导出为裸仓库
cd /var/www/project/
git init
cd /home/git/repositories/
git clone --bare /var/www/project/ project.git
cd /var/www/project/
# 在你的项目目录添加远程服务器
git remote add origin /home/git/repositories/project.git
cd /var/www/project/
# 提交初始化代码
git add .
git commit -m "init"
git push origin master
克隆裸仓库
和 github 操作方式类似
# 克隆远程服务器的仓库
git clone root@alsritter.icu:/home/ubuntu/git/TEST.git
# 提取出为裸仓库
git clone --bare /home/ubuntu/git/TEST Test.git